package Data::Semantic::URI::TestData::ftp;

use strict;
use warnings;
use Test::More;


our $VERSION = '0.03';


no warnings 'qw';    # Possible attempt to put comments in qw() list 

use constant TESTDATA => (
    {
        args => {},
        valid => [ qw(
            ftp://ftp.example.com/**!(),,
            ftp://127.0.0.1
            ftp://127.0.0.1/
            ftp://127.0.0.1:12345/some/file
            ftp://abigail:secret:here@127.0.0.1:21/some/file
            ftp://abigail:secret@127.0.0.1:21/some/file
            ftp://abigail:secret@ftp.example.com:21/some/file
            ftp://abigail@ftp.example.com
            ftp://abigail@ftp.example.com/some/path/somewhere;type=a
            ftp://abigail@ftp.example.com:21/some/file
            ftp://ftp.example.com
            ftp://ftp.example.com/%7Eabigail/
            ftp://ftp.example.com/
            ftp://ftp.example.com/--_$.+++
            ftp://ftp.example.com/.
            ftp://ftp.example.com/;type=I
            ftp://ftp.example.com/some/directory/some/where/
            ftp://ftp.example.com/some/file/some/where
            ftp://ftp.example.com/some/path;type=A
            ftp://ftp.example.com/some/path;type=i
            ftp://ftp.example.com/~abigail/
            ftp://ftp.example.com:21/some/file
            ftp://www.example.com//////////////
            ftp://www.example.com/:@=&=
        ) ],
        invalid  => [ qw(
            FTP://ftp.example.com/
            HTTP://ftp.example.com/
            ftp://ftp.example.com/`
            ftp://ftp.example.com/nope|nope
            ftp://ftp.example.com/some/??
            ftp://ftp.example.com/some/path;type=AI
            ftp://ftp.example.com/some/path;type=Q
            ftp://ftp.example.com/some/path?query/path
            ftp://ftp.example.com/some/path?query1?query2
            ftp://ftp.example.com:21/some/path?query
            ftp://www.example.com/some/file#target
            ftp://www.example.com/some/path;here
            http://ftp.example.com/
        ) ],
    },
    {
        args => { password => 1 },
        valid => [ qw(
            ftp://ftp.example.com/**!(),,
            ftp://127.0.0.1
            ftp://127.0.0.1/
            ftp://127.0.0.1:12345/some/file
            ftp://abigail:secret@127.0.0.1:21/some/file
            ftp://abigail:secret@ftp.example.com:21/some/file
            ftp://abigail@ftp.example.com
            ftp://abigail@ftp.example.com/some/path/somewhere;type=a
            ftp://abigail@ftp.example.com:21/some/file
            ftp://ftp.example.com
            ftp://ftp.example.com/%7Eabigail/
            ftp://ftp.example.com/
            ftp://ftp.example.com/--_$.+++
            ftp://ftp.example.com/.
            ftp://ftp.example.com/;type=I
            ftp://ftp.example.com/some/directory/some/where/
            ftp://ftp.example.com/some/file/some/where
            ftp://ftp.example.com/some/path;type=A
            ftp://ftp.example.com/some/path;type=i
            ftp://ftp.example.com/~abigail/
            ftp://ftp.example.com:21/some/file
            ftp://www.example.com//////////////
            ftp://www.example.com/:@=&=
        ) ],
        invalid  => [ qw(
            FTP://ftp.example.com/
            HTTP://ftp.example.com/
            ftp://abigail:secret:here@127.0.0.1:21/some/file
            ftp://ftp.example.com/`
            ftp://ftp.example.com/nope|nope
            ftp://ftp.example.com/some/??
            ftp://ftp.example.com/some/path;type=AI
            ftp://ftp.example.com/some/path;type=Q
            ftp://ftp.example.com/some/path?query/path
            ftp://ftp.example.com/some/path?query1?query2
            ftp://ftp.example.com:21/some/path?query
            ftp://www.example.com/some/file#target
            ftp://www.example.com/some/path;here
            http://ftp.example.com/
        ) ],
    },
    {
        args => { type => '[AIDaid]' },
        valid => [ qw(
            ftp://ftp.example.com/**!(),,
            ftp://127.0.0.1
            ftp://127.0.0.1/
            ftp://127.0.0.1:12345/some/file
            ftp://abigail:secret:here@127.0.0.1:21/some/file
            ftp://abigail:secret@127.0.0.1:21/some/file
            ftp://abigail:secret@ftp.example.com:21/some/file
            ftp://abigail@ftp.example.com
            ftp://abigail@ftp.example.com/some/path/somewhere;type=a
            ftp://abigail@ftp.example.com:21/some/file
            ftp://ftp.example.com
            ftp://ftp.example.com/%7Eabigail/
            ftp://ftp.example.com/
            ftp://ftp.example.com/--_$.+++
            ftp://ftp.example.com/.
            ftp://ftp.example.com/;type=I
            ftp://ftp.example.com/some/directory/some/where/
            ftp://ftp.example.com/some/file/some/where
            ftp://ftp.example.com/some/path;type=A
            ftp://ftp.example.com/some/path;type=D
            ftp://ftp.example.com/some/path;type=i
            ftp://ftp.example.com/~abigail/
            ftp://ftp.example.com:21/some/file
            ftp://www.example.com//////////////
            ftp://www.example.com/:@=&=
        ) ],
        invalid  => [ qw(
            FTP://ftp.example.com/
            HTTP://ftp.example.com/
            ftp://ftp.example.com/`
            ftp://ftp.example.com/nope|nope
            ftp://ftp.example.com/some/??
            ftp://ftp.example.com/some/path;type=AI
            ftp://ftp.example.com/some/path?query/path
            ftp://ftp.example.com/some/path?query1?query2
            ftp://ftp.example.com:21/some/path?query
            ftp://www.example.com/some/file#target
            ftp://www.example.com/some/path;here
            http://ftp.example.com/
        ) ],
    },
);


1;


__END__

{% PROCESS complete/semantic_testdata %}
